﻿// Copyright 2013 Ronald Schlenker, www.technewlogic.de.
// 
// This file is part of Byond.
// 
// Byond is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 2 of the License, or
// (at your option) any later version.
// 
// Byond is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with Byond.  If not, see <http://www.gnu.org/licenses/>.
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;

namespace Utils.DialogManagement
{
	public class DialogLayeringHelper
	{
		public DialogLayeringHelper(IDialogHost dialogHost)
		{
			_dialogHost = dialogHost;
		}

		private readonly IDialogHost _dialogHost;
		private readonly List<object> _layerStack = new List<object>();

		public bool HasDialogLayers { get { return _layerStack.Any(); } }

		public void ShowDialog(DialogBaseControl dialog)
		{
			_layerStack.Add(_dialogHost.DialogPlaceholderContent);
			_dialogHost.DialogPlaceholderContent = dialog;
		}

		public void HideDialog(DialogBaseControl dialog)
		{
			if (_dialogHost.DialogPlaceholderContent == dialog)
			{
				var oldContent = _layerStack.Last();
				_layerStack.Remove(oldContent);
				_dialogHost.DialogPlaceholderContent = oldContent;
			}
			else
				_layerStack.Remove(dialog);
		}

		public FrameworkElement GetCurrentContent()
		{
			return _dialogHost.OriginalContent;
		}
	}
}